BOKOSCU

Потоки в Node.js

Потоки (Streams) — это абстракция для работы с потоками данных, особенно полезная при работе с файлами, сетью и другими источниками ввода-вывода. Node.js предоставляет четыре основных типа потоков:

Зачем использовать потоки

Работа с потоками позволяет обрабатывать данные по частям, не загружая в память весь объем сразу. Это особенно важно для больших файлов или сетевых соединений.


Readable Stream

Пример чтения файла построчно:

import { createReadStream } from 'fs';

const stream = createReadStream('./large.txt', { encoding: 'utf8' });

stream.on('data', chunk => {
  console.log('Часть данных:', chunk);
});

stream.on('end', () => {
  console.log('Чтение завершено');
});

Writable Stream

Пример записи данных в файл:

import { createWriteStream } from 'fs';

const stream = createWriteStream('./output.txt');

stream.write('Первая строка\n');
stream.write('Вторая строка\n');
stream.end();

Pipe

Связывает readable и writable потоки:

import { createReadStream, createWriteStream } from 'fs';

const reader = createReadStream('./input.txt');
const writer = createWriteStream('./copy.txt');

reader.pipe(writer);

Transform Stream

Создание потока, преобразующего входной текст в верхний регистр:

import { Transform } from 'stream';

const upperCaseTransform = new Transform({
  transform(chunk, _encoding, callback) {
    callback(null, chunk.toString().toUpperCase());
  }
});

process.stdin.pipe(upperCaseTransform).pipe(process.stdout);

Если кто-то желает присоединиться - добро пожаловать. -Jame